package cn.dengyongsheng;

public class Triangle {
    static final int IntMax = 10000000;

    /**
     * 给定三角形三个边长的参数，判断三角形的类型
     *
     * @param s_a 三角形的第一条边
     * @param s_b 三角形的第二条边
     * @param s_c 三角形的第三条边
     * @return 三角形的类型枚举
     * @throws TriangleException
     */
    public static TriangleType judge(String s_a, String s_b, String s_c) throws TriangleException {
        int a = Integer.MAX_VALUE, b = Integer.MAX_VALUE, c = Integer.MAX_VALUE;
        try {
            a = Integer.parseInt(s_a);
            b = Integer.parseInt(s_b);
            c = Integer.parseInt(s_c);
        } catch (NumberFormatException e) {
            if (Integer.MAX_VALUE == a) {
                throw new TriangleException("参数a不是整数");
            } else if (Integer.MAX_VALUE == b) {
                throw new TriangleException("参数b不是整数");
            } else if (Integer.MAX_VALUE == c) {
                throw new TriangleException("参数c不是整数");
            }
        }
        if (a >= IntMax) {
            throw new TriangleException("参数a超出范围");
        } else if (b >= IntMax) {
            throw new TriangleException("参数b超出范围");
        } else if (c >= IntMax) {
            throw new TriangleException("参数c超出范围");
        }
        if (a <= 0) {
            throw new TriangleException("参数a小于或等于0");
        } else if (b <= 0) {
            throw new TriangleException("参数b小于或等于0");
        } else if (c <= 0) {
            throw new TriangleException("参数c小于或等于0");
        }

        if (a + b > c && a + c > b && b + c > a) {
            // 两边之和大于第三边
            if (a == b && a == c) {
                // 三边相等
                return TriangleType.等边三角形;
            } else if (a == b || a == c || b == c) {
                // 任意两条边相等
                return TriangleType.等腰三角形;
            } else {
                return TriangleType.一般三角形;
            }
        } else {
            return TriangleType.非三角形;
        }
    }
}
